﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using Ext.Net;
using System.Web.UI.WebControls;
using Sio.Mdm.Types.Database;
using Sio.Mdm.Entities;

namespace Sio.Mdm.Web.Organizacija
{
    public partial class SkupinaSeznam : Controls.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        #region OnLoad
        protected override void OnLoad(EventArgs e)
        {

            if (!IsPostBack && !X.IsAjaxRequest)
            {
                //delovna mesta
                EntityCollection<TipObjekta> delovnaMesta = new EntityCollection<TipObjekta>(
                        new Filter<TipObjekta>().OrderBy(r => r.Naziv)
                );
                this.StoreTipiObjektov.DataSource = delovnaMesta;
                this.StoreTipiObjektov.DataBind();
            }
            NaloziSeznamGrida(e);
        }
        #endregion

        #region Private
        private void NaloziSeznamGrida(EventArgs arg)
        {
            var clani = new EntityCollection<SeznamClanovSkupine>(new Filter<SeznamClanovSkupine>(Request.GetValue<int>("skupinaid")));

            StoreSkupinaSeznam.DataSource = clani;
            StoreSkupinaSeznam.DataBind();
        }
        #endregion

        protected void OdstraniClane(object sender, DirectEventArgs e)
        {
            List<int> deletedItems = e.GetIdList<int>("selected", "SkupinaClanID");
            List<int> deletedItemsGlobina = e.GetIdList<int>("selected", "Globina");

            if (deletedItems.Count > 0)
            {
                //odstranjujem samo tisto kar je na prvem nivoju (globina 0), kar je gnezdeno ni mogoče odstranit
                List<int> forDelete = new List<int>();
                for (var i = 0; i < deletedItems.Count; i++)
                {
                    if (deletedItemsGlobina[i] == 0)
                        forDelete.Add(deletedItems[i]);
                }

                EntityCollection<SkupinaClan> col = new EntityCollection<SkupinaClan>(
                    new Filter<SkupinaClan>().SelectByField(r => r.SkupinaClanID, forDelete.ToArray())
                );
                col.RemoveAll();
                col.Update();
            }

        }
    }
}
